/**
 * 1. promise 是一个类 在执行这个类时 需要传递一个执行器 执行器立即执行
 * 2. promise 中有 成功 失败 等待三个状态
 *    状态确定后不可更改
 * 3. resolve 和 reject 函数用来更改状态 
 * 4. then 内部判断状态 成功调用成功回调函数 失败调用失败回调函数
 *    then 方法定义在原型上
 * 5. then 成功回调有一个参数，标识成功后的值；then 失败回调有一个参数，表示失败后的原因
 */

const MyPromise = require('./myPromise')


 let promise = new MyPromise((resolve, reject)=> {
   resolve('end')
  // setTimeout(() => {
    
  //  reject('err')
  // }, 5000)
 })

function oten () {
  return new MyPromise ((resolve, reject) => {
    resolve(123)
  })
}

 let p1 = promise.then(val=>{
   console.log(val)
   return p1
 },err=>{
   console.log(err,1)
 })
 p1.then(val => {
   console.log(val)
 },err => {
   console.log(err)
 })
//  promise.then(val=>{
//   console.log(val)
// },err=>{
//   console.log(err,2)
// })
// promise.then(val=>{
//   console.log(val)
// },err=>{
//   console.log(err,3)
// })